package web_util

import (
	json_util "app/app_src/framework/util/json"
	json_param_util "app/app_src/framework/util/web/json_param"

	"github.com/gin-gonic/gin"
)

// 解析 JSON 参数
func GetJsonParam(ctx *gin.Context) *json_param_util.JsonParam {
	data, err := ctx.GetRawData()
	if err != nil {
		panic(err)
	}

	var objs map[string]any

	if len(data) == 0 {
		objs = make(map[string]any, 0)
	} else {
		objs = json_util.FromStringAsMap(string(data))
	}

	return json_param_util.NewJsonParam(objs)
}

// 解析 JSON 参数
func GetJsonParamArray(ctx *gin.Context) []*json_param_util.JsonParam {
	data, err := ctx.GetRawData()
	if err != nil {
		panic(err)
	}

	if len(data) == 0 {
		return make([]*json_param_util.JsonParam, 0)
	}

	objs := json_util.FromStringAsArray(string(data))
	result := make([]*json_param_util.JsonParam, 0, len(objs))

	for index := range objs {
		param := json_param_util.NewJsonParam(objs[index])
		result = append(result, param)
	}

	return result
}
